note
	description: "Summary description for {MISIL}."
	author: "Durand Alejandro - Santos Rodrigo"
	date: "$Date$"
	revision: "$Revision$"



class
	MISIL
	--Clase que modela un misil exocet utilizado por la armada argentina para sus aviones MIRAGE.

   create
     --Contructor de la clase.
   	   make

    feature{NONE}--Atributos privados

        objetivo : STRING
             --objetivo del misil

     feature
             --Metodos de acceso publico

 		make
    		--Constructor de la clase MISIL
    		do
    			objetivo := void--no tiene objetivo primario
    		end

		Activar
			--Metodo que determina la falla o correcto accionamiento de el material explosivo del misil

				local
				r : RANDOM
				t : DATE_TIME

				do
					create r.make
					create t.make_now

					r.set_seed (t.seconds)
					if((r.next_random (t.seconds) \\ 3) = 0 )
					  then
					  	--Aca lanzo la excepcion
					  	io.putstring ("--- Misil :: Activar :: Material defectuoso")
					  	io.new_line
					  	r := void
					  	r.set_seed (1)
					  else
					  		io.putstring ("--- Misil :: Activar :: Activacion completa")
					  		io.new_line
					end
     		end


	Memoria : BOOLEAN
		--Metodo que determina la falla o correcto funcionamiento de la memoria del misil.

			local
				r : RANDOM
				t : DATE_TIME

			do
				create r.make
				create t.make_now

				r.set_seed (t.seconds)
				if((r.next_random (t.seconds) \\ 3) = 0 )
				  	then
					  --Memoria defectuosa
					  	Result := FALSE
					else
					  	Result := TRUE
				end
     		end

     Fijar_Blanco(o : STRING)
          --Metodo que fija el objetivo dado en la memoria del misil
          --Esta operacion falla si la memoria esta defectuosa.
        require
        	Memoria
      	do
		   objetivo := Objetivo
		   io.put_string ("--- Misil :: Fijar_Blanco :: Objetivo fijado")
		   io.new_line
		end


	 Hay_Combustible : BOOLEAN
         --Metodo que determina si el misil posee o no combustible suficiente para su despege.
         --Utilizo un generador aleatorio.
         local
				r : RANDOM
				t : DATE_TIME

				do
					create r.make
					create t.make_now

					r.set_seed (t.seconds)
					if((r.next_random (t.seconds) \\ 3) = 0 )
					  then
					  	--No hay combustible
					  	Result := FALSE
					  	else
					  		Result := TRUE
				     end
         end

	Despegar
		require
			Hay_Combustible--Debe tener combustible para el despege, sino falla.
		do
		  io.putstring("--- Misil :: Despegar :: Despegue completo")
		  io.new_line
		 --No hay combustible, se ejecuta el rescue
       	end

end
